package com.ruoyi.ManagerApi.controller;

import java.util.List;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.ruoyi.ManagerApi.domain.TTpManufacturer;
import com.ruoyi.ManagerApi.service.ITTpManufacturerService;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.utils.poi.ExcelUtil;
import com.ruoyi.common.core.web.page.TableDataInfo;

/**
 * 接口管理厂家信息Controller
 * 
 * @author li
 * @date 2025-09-11
 */
@RestController
@RequestMapping("/manufacturer")
@Tag(name = "接口管理厂家信息", description = "接口管理厂家信息相关操作API")
public class TTpManufacturerController extends BaseController
{
    @Autowired
    private ITTpManufacturerService tTpManufacturerService;

    /**
     * 查询接口管理厂家信息列表
     */
    @Operation(summary = "查询接口管理厂家信息列表", description = "查询接口管理厂家信息列表")
    @RequiresPermissions("ruoyi-managerapi:manufacturer:list")
    @GetMapping("/list")
    public TableDataInfo list(TTpManufacturer tTpManufacturer)
    {
        startPage();
        List<TTpManufacturer> list = tTpManufacturerService.selectTTpManufacturerList(tTpManufacturer);
        return getDataTable(list);
    }

    /**
     * 导出接口管理厂家信息列表
     */
    @Operation(summary = "导出接口管理厂家信息列表", description = "导出接口管理厂家信息列表")
    @RequiresPermissions("ruoyi-managerapi:manufacturer:export")
    @Log(title = "接口管理厂家信息", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, TTpManufacturer tTpManufacturer)
    {
        List<TTpManufacturer> list = tTpManufacturerService.selectTTpManufacturerList(tTpManufacturer);
        ExcelUtil<TTpManufacturer> util = new ExcelUtil<TTpManufacturer>(TTpManufacturer.class);
        util.exportExcel(response, list, "接口管理厂家信息数据");
    }

    /**
     * 获取接口管理厂家信息详细信息
     */
    @Operation(summary = "获取接口管理厂家信息详细信息", description = "获取接口管理厂家信息详细信息")
    @RequiresPermissions("ruoyi-managerapi:manufacturer:query")
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") String id)
    {
        return success(tTpManufacturerService.selectTTpManufacturerById(id));
    }

    /**
     * 新增接口管理厂家信息
     */
    @Operation(summary = "新增接口管理厂家信息", description = "新增接口管理厂家信息")
    @RequiresPermissions("ruoyi-managerapi:manufacturer:add")
    @Log(title = "接口管理厂家信息", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody TTpManufacturer tTpManufacturer)
    {
        return toAjax(tTpManufacturerService.insertTTpManufacturer(tTpManufacturer));
    }

    /**
     * 修改接口管理厂家信息
     */
    @Operation(summary = "修改接口管理厂家信息", description = "修改接口管理厂家信息")
    @RequiresPermissions("ruoyi-managerapi:manufacturer:edit")
    @Log(title = "接口管理厂家信息", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody TTpManufacturer tTpManufacturer)
    {
        return toAjax(tTpManufacturerService.updateTTpManufacturer(tTpManufacturer));
    }

    /**
     * 删除接口管理厂家信息
     */
    @Operation(summary = "删除接口管理厂家信息", description = "删除接口管理厂家信息")
    @RequiresPermissions("ruoyi-managerapi:manufacturer:remove")
    @Log(title = "接口管理厂家信息", businessType = BusinessType.DELETE)
	@DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable String[] ids)
    {
        return toAjax(tTpManufacturerService.deleteTTpManufacturerByIds(ids));
    }

    //厂家接口连通性测试
    @Operation(summary = "厂家接口连通性测试", description = "厂家接口连通性测试")
    @GetMapping("/connection/{id}")
    @RequiresPermissions("ruoyi-managerapi:manufacturer:test")
    @ResponseBody
    public AjaxResult testConnectionByForm(@PathVariable("id") String id) {
        boolean connection = tTpManufacturerService.connection(id);
        return success(connection);
    }
}
